home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / Fresco / build / Unix / config / cf / lnxLib.rules < prev    next >
Encoding:
Text File  |  1995-07-12  |  18.9 KB  |  556 lines

  1. XCOMM $XConsortium: lnxLib.rules,v 1.8 95/01/16 21:11:00 kaleb Exp $
  2. #define BaseShLibReqs
  3.  
  4. /*
  5.  * Linux shared library rules (DLL & ELF versions)
  6.  */
  7. #ifndef HasSharedLibraries
  8. #define HasSharedLibraries YES
  9. #endif
  10. #ifndef ForceNormalLib
  11. #define ForceNormalLib NO
  12. #endif
  13.  
  14. #define SharedOldX NO
  15.  
  16. #if UseElfFormat
  17.  
  18. #ifndef SharedDataSeparation
  19. #define SharedDataSeparation NO
  20. #endif
  21. #ifndef SharedCodeDef
  22. #define SharedCodeDef /**/
  23. #endif
  24. #ifndef SharedLibraryDef
  25. #define SharedLibraryDef /**/
  26. #endif
  27. #ifndef ShLibIncludeFile
  28. #define ShLibIncludeFile <lnxLib.tmpl>
  29. #endif
  30. #ifndef SharedLibraryLoadFlags
  31. #define SharedLibraryLoadFlags -shared
  32. #endif
  33. #ifndef PositionIndependentCFlags
  34. #define PositionIndependentCFlags -fPIC
  35. #endif
  36. #ifndef ExtraLoadFlags
  37. #define ExtraLoadFlags -Wl,-rpath,/usr/X11R6/lib
  38. #endif
  39. #ifndef PositionIndependentCplusplusFlags
  40. #define PositionIndependentCplusplusFlags -fPIC
  41. #endif
  42.  
  43. /*
  44.  * InstallSharedLibrary - generate rules to install the shared library.
  45.  * NOTE: file must be executable, hence "INSTBINFLAGS"
  46.  */
  47. #ifndef InstallSharedLibrary
  48. #define    InstallSharedLibrary(libname,rev,dest)                @@\
  49. install:: Concat(lib,libname.so.rev)                     @@\
  50.     MakeDir($(DESTDIR)dest)                        @@\
  51.     $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\
  52.     (T=`echo Concat($(DESTDIR)dest/lib,libname.so.rev) | sed 's/\.[^\.]*$$//'`;\
  53.         $(RM) $$T && $(LN) Concat(lib,libname.so.rev) $$T)    @@\
  54.     $(RM) Concat($(DESTDIR)dest/lib,libname.so)            @@\
  55.     $(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so)
  56. #endif /* InstallSharedLibrary */
  57.  
  58. /*
  59.  * InstallSharedLibraryData - generate rules to install the shared library data
  60.  */
  61. #ifndef InstallSharedLibraryData
  62. #define    InstallSharedLibraryData(libname,rev,dest)
  63. #endif /* InstallSharedLibraryData */
  64.  
  65.  
  66. /*
  67.  * SharedCplusplusLibraryTarget - generate rules to create a shared C++
  68.  * library; use $(CXXLINK) instead of $(LD) in case the library needs
  69.  * global constructors to be called.
  70.  *
  71.  * Not tested yet; send any bug fixes to fresco@x.org.
  72.  */
  73. #ifndef SharedCplusplusLibraryTarget
  74. #define SharedCplusplusLibraryTarget(libname,rev,solist,down,up,need_libs) @@\
  75. AllTarget(Concat(lib,libname.so.rev))                    @@\
  76.                                     @@\
  77. Concat(lib,libname.so.rev):  solist                    @@\
  78.     $(RM) $@                            @@\
  79.     T=`echo $@ | sed 's/\.[^\.]*$$//'`; \
  80.     $(CXXLINK) -o $@~ $(SHLIBLDFLAGS) -Wl,-soname,$$T solist need_libs; \
  81.     $(RM) $$T ; $(LN) $@ $$T                    @@\
  82.     $(RM) $@                            @@\
  83.     $(MV) $@~ $@                            @@\
  84.     $(RM) Concat(lib,libname.so)                    @@\
  85.     $(LN) $@ Concat(lib,libname.so)                    @@\
  86.                                     @@\
  87. clean::                                    @@\
  88.     $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
  89.  
  90. #endif /* SharedCplusplusLibraryTarget */
  91.  
  92. /*
  93.  * SharedLibraryTarget - generate rules to create a shared library;
  94.  * build it into a different name so that we do not hose people by having
  95.  * the library gone for long periods.
  96.  */
  97. #ifndef SharedLibraryTarget
  98. #define SharedLibraryTarget(libname,rev,solist,down,up)            @@\
  99. AllTarget(Concat(lib,libname.so.rev))                    @@\
  100.                                     @@\
  101. Concat(lib,libname.so.rev):  solist                    @@\
  102.     $(RM) $@~                            @@\
  103.     (cd down; T=`echo $@ | sed 's/\.[^\.]*$$//'`; \
  104.         $(LD) -o up/$@~ $(SHLIBLDFLAGS) --soname $$T solist $(REQUIREDLIBS))    @@\
  105.     $(RM) $@                             @@\
  106.     $(MV) $@~ $@                            @@\
  107.     $(RM) Concat(lib,libname.so)                    @@\
  108.     $(LN) $@ Concat(lib,libname.so)                    @@\
  109.     LinkBuildLibrary($@)                        @@\
  110.     LinkBuildLibrary(Concat(lib,libname.so))            @@\
  111.                                     @@\
  112. clean::                                    @@\
  113.     $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
  114.  
  115. #endif /* SharedLibraryTarget */
  116.  
  117. /*
  118.  * SharedLibraryDataTarget - generate rules to create shlib data file;
  119.  */
  120. #ifndef SharedLibraryDataTarget
  121. #define SharedLibraryDataTarget(libname,rev,salist)
  122. #endif /* SharedLibraryTarget */
  123.  
  124. #else /* UseElfFormat */
  125.  
  126. #ifndef SharedDataSeparation
  127. #define SharedDataSeparation NO
  128. #endif
  129. #ifndef SharedCodeDef
  130. #define SharedCodeDef /**/
  131. #endif
  132. #ifndef SharedLibraryDef
  133. #define SharedLibraryDef /**/
  134. #endif
  135. #ifndef ShLibIncludeFile
  136. #define ShLibIncludeFile <lnxLib.tmpl>
  137. #endif
  138. #ifndef SharedLibraryLoadFlags
  139. #define SharedLibraryLoadFlags /**/
  140. #endif
  141. #ifndef PositionIndependentCFlags
  142. #define PositionIndependentCFlags -B/usr/dll/jump/
  143. #endif
  144.  
  145. /*
  146.  * These definitions are now extended to work with the X sources and
  147.  * external sources wishing to build shared libs.
  148.  *
  149.  * A library can create it's own shlibs (.so) or can be incorporated into
  150.  * another "host" lib. All libraries generate stub (.sa) files.
  151.  * A "host" lib does all the work to generate the stubs for itself and its
  152.  * "guests", invoking the "guest" Makefiles to create the objects for
  153.  * inclusion into the "host" shlib. A "guest" lib will ask the "host" to
  154.  * create the stubfiles, then copy its own into its directory.
  155.  * Most external libs are "host" libs; the concept of "guest" is a holdover
  156.  * from older libs during the days of scarce shared library address space.
  157.  *
  158.  * To create a simple "host" shared lib, Xfoo, define:
  159.  *
  160.  *  JUMP_ROOT_Xfoo = <source directory>
  161.  *  JUMP_IS_HOST_Xfoo = YES
  162.  *  JUMP_STUBLIBS_Xfoo = libXfoo.sa
  163.  *  JUMP_DIR_Xfoo = $(JUMP_ROOT_Xfoo)/shared        <work directory>
  164.  *  JUMP_DEFS_Xfoo = -DFOO                <defs for jump files>
  165.  *  JUMP_VARS_Xfoo = $(JUMP_ROOT_Xfoo)/jump_vars    <see DLL docs>
  166.  *  JUMP_FUNCS_Xfoo = $(JUMP_ROOT_Xfoo)/jump_funcs    <see DLL docs>
  167.  *  JUMP_IGNORE_Xfoo = $(JUMP_ROOT_Xfoo)/jump_ignore    <see DLL docs>
  168.  *  JUMP_EXPORT_Xfoo = $(JUMP_DIR_Xfoo)/jump.vars    <exported symbols>
  169.  *  JUMP_IMPORT_Xfoo = $(JUMP_DIR_Xbar)            <imported symbols>
  170.  *  JUMP_ADDRESS_Xfoo = 0xXXXXXXXX            <fill in with address>
  171.  *  JUMP_JUMPTABLESIZE_Xfoo = 0x4000            <adjust if necessary>
  172.  *  JUMP_GOTSIZE_Xfoo = 4096                <adjust if necessary>
  173.  *  JUMP_STUBNAMES_Xfoo = libXfoo            <and others>
  174.  *  JUMP_STUBS_IMPORT_Xfoo = /usr/lib/libc.sa        <and others>
  175.  *  JUMP_LDLIBS_Xfoo = `$(CC) --print-libgcc-file-name` -lc <and others>
  176.  *
  177.  * To create a complex "host", you need to add
  178.  *  JUMP_SIBARS_Xt = jump/libXbar.a~            <and others>
  179.  * These are the archives of the shared objects of the "guest" libs. They
  180.  * need to be added to the JUMP_LDLIBS_Xfoo lines.
  181.  *
  182.  * For further clarification, study the definitions of libXaw, a simple "host"
  183.  * lib, libXt, a complex "host" lib, and libXmu, one of libXts "guests".
  184.  *
  185.  * As a hint of how to start (with the DLL docs), touch jump_vars, jump_funcs
  186.  * and jump_ignore, then compile. Then massage the jump.vars and jump.funcs
  187.  * files in the shared subdirectory into jump_xxx files.
  188.  */
  189.  
  190. #ifndef UseInstalled
  191. XCOMM These are only needed to build the server
  192.  
  193. JUMP_LDLIBS_libc = `$(CC) --print-libgcc-file-name` -lc
  194.  
  195. XCOMM libX11.so (X11, SM, ICE)
  196. JUMP_ROOT_X11 = $(XLIBSRC)
  197. JUMP_IS_HOST_X11 = YES
  198. JUMP_STUBLIBS_X11 = libX11.sa libSM.sa libICE.sa
  199. JUMP_SIBDIRS_X11 = $(JUMP_ROOT_SM) $(JUMP_ROOT_ICE)
  200. JUMP_DIR_X11 = $(JUMP_ROOT_X11)/shared
  201. JUMP_DEFS_X11 = $(XDMAUTHDEFS)
  202. JUMP_VARS_X11 = $(JUMP_ROOT_X11)/jump_vars
  203. JUMP_FUNCS_X11 = $(JUMP_ROOT_X11)/jump_funcs
  204. JUMP_IGNORE_X11 = $(JUMP_ROOT_X11)/jump_ignore
  205. JUMP_EXPORT_X11 = $(JUMP_DIR_X11)/jump.vars
  206. JUMP_ADDRESS_X11 = 0x60200000
  207. JUMP_JUMPTABLESIZE_X11 = 0x4000
  208. JUMP_GOTSIZE_X11 = 4096
  209. JUMP_STUBNAMES_X11 = libX11 libSM libICE
  210. JUMP_STUBS_IMPORT_X11 = /usr/lib/libc.sa
  211. JUMP_SIBARS_X11 = jump/libSM.a~ jump/libICE.a~
  212. JUMP_LDLIBS_X11 = $(JUMP_SIBARS_X11) $(JUMP_LDLIBS_libc)
  213.  
  214. XCOMM libSM (part of libX11.so)
  215. JUMP_ROOT_SM = $(SMSRC)
  216. JUMP_IS_HOST_SM = NO
  217. JUMP_HOST_SM = $(JUMP_ROOT_X11)
  218. JUMP_DIR_SM = $(JUMP_DIR_X11)
  219.  
  220. XCOMM libICE (part of libX11.so)
  221. JUMP_ROOT_ICE = $(ICESRC)
  222. JUMP_IS_HOST_ICE = NO
  223. JUMP_HOST_ICE = $(JUMP_ROOT_X11)
  224. JUMP_DIR_ICE = $(JUMP_DIR_X11)
  225.  
  226. XCOMM libXt.so (Xt, Xmu, Xext, Xi, Xtst)
  227. JUMP_ROOT_Xt = $(TOOLKITSRC)
  228. JUMP_IS_HOST_Xt = YES
  229. JUMP_STUBLIBS_Xt = libXt.sa libXmu.sa libXext.sa libXi.sa libXtst.sa
  230. JUMP_SUBDIRS_Xt = $(JUMP_ROOT_X11)
  231. JUMP_SIBDIRS_Xt = $(JUMP_ROOT_Xmu) $(JUMP_ROOT_Xext) \
  232.     $(JUMP_ROOT_Xi) $(JUMP_ROOT_Xtst)
  233. JUMP_DIR_Xt = $(JUMP_ROOT_Xt)/shared
  234. JUMP_VARS_Xt = $(JUMP_ROOT_Xt)/jump_vars
  235. JUMP_FUNCS_Xt = $(JUMP_ROOT_Xt)/jump_funcs
  236. JUMP_IGNORE_Xt = $(JUMP_ROOT_Xt)/jump_ignore
  237. JUMP_EXPORT_Xt = $(JUMP_DIR_Xt)/jump.vars
  238. JUMP_IMPORT_Xt = $(JUMP_EXPORT_X11)
  239. JUMP_ADDRESS_Xt = 0x602a0000
  240. JUMP_JUMPTABLESIZE_Xt = 0x4000
  241. JUMP_GOTSIZE_Xt = 4096
  242. JUMP_STUBNAMES_Xt = libXt libXmu libXext libXi libXtst
  243. JUMP_STUBS_IMPORT_Xt = $(JUMP_STUBS_IMPORT_X11)
  244. JUMP_SIBARS_Xt = jump/libXmu.a~ jump/libXext.a~ jump/libXi.a~ jump/libXtst.a~
  245. JUMP_LDLIBS_Xt = $(JUMP_SIBARS_Xt) $(JUMP_ROOT_ICE)/libICE.sa \
  246.     $(JUMP_ROOT_SM)/libSM.sa $(JUMP_ROOT_X11)/libX11.sa $(JUMP_LDLIBS_libc)
  247.  
  248. XCOMM libXmu (part of libXt.so)
  249. JUMP_ROOT_Xmu = $(XMUSRC)
  250. JUMP_IS_HOST_Xmu = NO
  251. JUMP_HOST_Xmu = $(JUMP_ROOT_Xt)
  252. JUMP_DIR_Xmu = $(JUMP_DIR_Xt)
  253.  
  254. XCOMM libXext (part of libXt.so)
  255. JUMP_ROOT_Xext = $(XEXTLIBSRC)
  256. JUMP_IS_HOST_Xext = NO
  257. JUMP_HOST_Xext = $(JUMP_ROOT_Xt)
  258. JUMP_DIR_Xext = $(JUMP_DIR_Xt)
  259.  
  260. XCOMM libXi (part of libXt.so)
  261. JUMP_ROOT_Xi = $(XILIBSRC)
  262. JUMP_IS_HOST_Xi = NO
  263. JUMP_HOST_Xi = $(JUMP_ROOT_Xt)
  264. JUMP_DIR_Xi = $(JUMP_DIR_Xt)
  265.  
  266. XCOMM libXtst (part of libXt.so)
  267. JUMP_ROOT_Xtst = $(XTESTLIBSRC)
  268. JUMP_IS_HOST_Xtst = NO
  269. JUMP_HOST_Xtst = $(JUMP_ROOT_Xt)
  270. JUMP_DIR_Xtst = $(JUMP_DIR_Xt)
  271.  
  272. XCOMM libXaw.so (Xaw)
  273. JUMP_ROOT_Xaw = $(AWIDGETSRC)
  274. JUMP_IS_HOST_Xaw = YES
  275. JUMP_STUBLIBS_Xaw = libXaw.sa
  276. JUMP_SUBDIRS_Xaw = $(JUMP_ROOT_Xt)
  277. JUMP_DIR_Xaw = $(JUMP_ROOT_Xaw)/shared
  278. JUMP_VARS_Xaw = $(JUMP_ROOT_Xaw)/jump_vars
  279. JUMP_FUNCS_Xaw = $(JUMP_ROOT_Xaw)/jump_funcs
  280. JUMP_IGNORE_Xaw = $(JUMP_ROOT_Xaw)/jump_ignore
  281. JUMP_EXPORT_Xaw = $(JUMP_DIR_Xaw)/jump.vars
  282. JUMP_IMPORT_Xaw = $(JUMP_EXPORT_Xt) $(JUMP_EXPORT_X11)
  283. JUMP_ADDRESS_Xaw = 0x60300000
  284. JUMP_JUMPTABLESIZE_Xaw = 0x4000
  285. JUMP_GOTSIZE_Xaw = 4096
  286. JUMP_STUBNAMES_Xaw = libXaw
  287. JUMP_STUBS_IMPORT_Xaw = $(JUMP_STUBS_IMPORT_X11)
  288. JUMP_LDLIBS_Xaw = $(JUMP_ROOT_Xt)/libXt.sa $(JUMP_ROOT_Xt)/libXmu.sa \
  289.     $(JUMP_ROOT_Xt)/libXext.sa $(JUMP_ROOT_X11)/libX11.sa \
  290.     $(JUMP_LDLIBS_libc)
  291.  
  292. # libPEX.so (PEX5)
  293. JUMP_ROOT_PEX5 = $(PEXLIBSRC)
  294. JUMP_IS_HOST_PEX5 = YES
  295. JUMP_STUBLIBS_PEX5 = libPEX5.sa
  296. JUMP_SUBDIRS_PEX5 = $(JUMP_ROOT_X11)
  297. JUMP_DIR_PEX5 = $(JUMP_ROOT_PEX5)/shared
  298. JUMP_VARS_PEX5 = $(JUMP_ROOT_PEX5)/jump_vars
  299. JUMP_FUNCS_PEX5 = $(JUMP_ROOT_PEX5)/jump_funcs
  300. JUMP_IGNORE_PEX5 = $(JUMP_ROOT_PEX5)/jump_ignore
  301. JUMP_EXPORT_PEX5 = $(JUMP_DIR_PEX5)/jump.vars
  302. JUMP_IMPORT_PEX5 = $(JUMP_EXPORT_X11)
  303. JUMP_ADDRESS_PEX5 = 0x60b00000
  304. JUMP_JUMPTABLESIZE_PEX5 = 0x4000
  305. JUMP_GOTSIZE_PEX5 = 4096
  306. JUMP_STUBNAMES_PEX5 = libPEX5
  307. JUMP_STUBS_IMPORT_PEX5 = $(JUMP_STUBS_IMPORT_X11) /usr/lib/libm.sa
  308. JUMP_LDLIBS_PEX5 = $(JUMP_ROOT_X11)/libX11.sa $(JUMP_LDLIBS_libc) -lm
  309.  
  310. # libXIE.so (XIE)
  311. JUMP_ROOT_XIE = $(XIELIBSRC)
  312. JUMP_IS_HOST_XIE = YES
  313. JUMP_STUBLIBS_XIE = libXIE.sa
  314. JUMP_SUBDIRS_XIE = $(JUMP_ROOT_X11)
  315. JUMP_DIR_XIE = $(JUMP_ROOT_XIE)/shared
  316. JUMP_VARS_XIE = $(JUMP_ROOT_XIE)/jump_vars
  317. JUMP_FUNCS_XIE = $(JUMP_ROOT_XIE)/jump_funcs
  318. JUMP_IGNORE_XIE = $(JUMP_ROOT_XIE)/jump_ignore
  319. JUMP_EXPORT_XIE = $(JUMP_DIR_XIE)/jump.vars
  320. JUMP_IMPORT_XIE = $(JUMP_EXPORT_X11)
  321. JUMP_ADDRESS_XIE = 0x60be0000
  322. JUMP_JUMPTABLESIZE_XIE = 0x4000
  323. JUMP_GOTSIZE_XIE = 4096
  324. JUMP_STUBNAMES_XIE = libXIE
  325. JUMP_STUBS_IMPORT_XIE = $(JUMP_STUBS_IMPORT_X11) /usr/lib/libm.sa
  326. JUMP_LDLIBS_XIE = $(JUMP_ROOT_X11)/libX11.sa $(JUMP_LDLIBS_libc) -lm
  327.  
  328. XCOMM libFresco.so (Fresco, Xtf)
  329. JUMP_ROOT_Fresco = $(BUILDLIBDIR)
  330. JUMP_IS_HOST_Fresco = YES
  331. JUMP_STUBLIBS_Fresco = libFresco.sa libXtf.sa
  332. JUMP_SUBDIRS_Fresco = $(JUMP_ROOT_X11)
  333. JUMP_SIBDIRS_Fresco = $(JUMP_ROOT_Xtf)
  334. JUMP_DIR_Fresco = $(JUMP_ROOT_Fresco)/shared
  335. JUMP_VARS_Fresco = $(JUMP_ROOT_Fresco)/jump_vars
  336. JUMP_FUNCS_Fresco = $(JUMP_ROOT_Fresco)/jump_funcs
  337. JUMP_IGNORE_Fresco = $(JUMP_ROOT_Fresco)/jump_ignore
  338. JUMP_EXPORT_Fresco = $(JUMP_DIR_Fresco)/jump.vars
  339. JUMP_IMPORT_Fresco = $(JUMP_EXPORT_X11)
  340. JUMP_ADDRESS_Fresco = 0x60bc0000
  341. JUMP_JUMPTABLESIZE_Fresco = 0x4000
  342. JUMP_GOTSIZE_Fresco = 4096
  343. JUMP_STUBNAMES_Fresco = libFresco libXtf
  344. JUMP_STUBS_IMPORT_Fresco = $(JUMP_STUBS_IMPORT_X11)
  345. JUMP_SIBARS_Fresco = jump/libXtf.a~
  346. JUMP_LDLIBS_Fresco = $(JUMP_SIBARS_Fresco) $(JUMP_ROOT_X11)/libX11.sa \
  347.     $(JUMP_LDLIBS_libc)
  348.  
  349. XCOMM libXtf (part of libFresco.so)
  350. JUMP_ROOT_Xtf = $(XTFSRC)
  351. JUMP_IS_HOST_Xtf = NO
  352. JUMP_HOST_Xtf = $(JUMP_ROOT_Fresco)
  353. JUMP_DIR_Xtf = $(JUMP_DIR_Fresco)
  354.  
  355. #endif /* !UseInstalled */
  356.  
  357. /*
  358.  * SharedLibraryDataTarget - generate rules to create shared data file
  359.  */
  360. #ifndef SharedLibraryDataTarget
  361. #define SharedLibraryDataTarget(libname,rev,salist)
  362. #endif
  363.  
  364. /*
  365.  * SharedCplusplusLibraryTarget - generate rules to create a shared C++
  366.  * library; use $(CXXLINK) instead of $(LD) in case the library needs
  367.  * global constructors to be called.
  368.  *
  369.  * Not tested yet; send any bug fixes to fresco@x.org.
  370.  */
  371. #ifndef SharedCplusplusLibraryTarget
  372. #define SharedCplusplusLibraryTarget(libname,rev,solist,down,up,need_libs) @@\
  373. SharedLibraryTarget(libname,rev,solist,down,up)
  374. #endif /* SharedCplusplusLibraryTarget */
  375.  
  376. /*
  377.  * SharedLibraryTarget - generate rules to create a shared library;
  378.  * There are two basic flavors of libs: self-generating, which create
  379.  * their own (and possibly other) libs, and hosted, which rely on another
  380.  * lib for all the work.
  381.  */
  382. #ifndef SharedLibraryTarget
  383. #define SharedLibraryTarget(libname,rev,solist,down,up)            @@\
  384. XCOMM This logic is such to compile the libs in their proper order,    @@\
  385. XCOMM remain dependent on subsidiary libs, and yet minimize local work    @@\
  386.                                     @@\
  387. JUMP_DIR=./jump                                @@\
  388. JUMP_LIB=Concat(lib,libname)                        @@\
  389.                                     @@\
  390. XCOMM  this is needed for newer gnumake versions            @@\
  391. export JUMP_DIR JUMP_LIB                        @@\
  392.                                     @@\
  393. JUMP_IS_HOST=$(Concat(JUMP_IS_HOST_,libname))                @@\
  394. JUMP_AR=$(JUMP_DIR)/Concat(lib,libname.a~)                @@\
  395. JUMP_SA=Concat(lib,libname.sa)                        @@\
  396. JUMP_SO=Concat(lib,libname.so.rev)                    @@\
  397.                                     @@\
  398. JUMP_HOST=$(Concat(JUMP_HOST_,libname))                    @@\
  399.                                     @@\
  400. INSTSOLIBFLAGS=-m 0555                            @@\
  401.                                     @@\
  402. AllTarget($(BUILDLIBDIR)/$(JUMP_SA))                    @@\
  403.                                     @@\
  404. $(BUILDLIBDIR)/$(JUMP_SA): $(JUMP_SA)                    @@\
  405.     LinkBuildLibrary($(JUMP_SA))                    @@\
  406.                                     @@\
  407. $(JUMP_SA) $(Concat(JUMP_STUBLIBS_,libname)) do_JUMP_SA: \
  408.         down/mk_JUMP_SA_$(JUMP_IS_HOST)                @@\
  409.                                     @@\
  410. down/mk_JUMP_SA_0:: mk_JUMP_HOST                    @@\
  411.                                     @@\
  412. down/mk_JUMP_SA_0:: $(JUMP_HOST)/$(JUMP_SA)                @@\
  413.     $(RM) $(JUMP_SA)                        @@\
  414.     $(LN) $(JUMP_HOST)/$(JUMP_SA) $(JUMP_SA)            @@\
  415.     touch $@                            @@\
  416.                                     @@\
  417. down/mk_JUMP_SA_1:: $(JUMP_SO)                        @@\
  418.                                     @@\
  419. down/mk_JUMP_SA_1:: down/mk_JUMP_SO_2                    @@\
  420.     $(RM) $(Concat(JUMP_STUBLIBS_,libname))                @@\
  421.     mkstubs -v rev -l $(JUMP_LIB) \
  422.         -a $(Concat(JUMP_ADDRESS_,libname)) \
  423.         -j $(Concat(JUMP_JUMPTABLESIZE_,libname)) \
  424.         -g $(Concat(JUMP_GOTSIZE_,libname)) \
  425.         -- $(Concat(JUMP_STUBNAMES_,libname))            @@\
  426.     verify-shlib -l $(JUMP_SO) \
  427.         $(Concat(JUMP_STUBLIBS_,libname))            @@\
  428.     $(MV) verify.out $(JUMP_DIR)                    @@\
  429.     touch $@                            @@\
  430.                                     @@\
  431. mk_JUMP_HOST:                                @@\
  432.     @echo checking stub library $(JUMP_SA) in $(JUMP_HOST)...    @@\
  433.     @(cd $(JUMP_HOST); $(MAKE) $(MFLAGS) $(JUMP_SA)) || exit 1    @@\
  434.     @echo ok. continuing in $(Concat(JUMP_ROOT_,libname))...    @@\
  435.                                     @@\
  436. $(JUMP_SO): down/mk_JUMP_SO_$(JUMP_IS_HOST)                @@\
  437.                                     @@\
  438. down/mk_JUMP_SO_0:                            @@\
  439.                                     @@\
  440. down/mk_JUMP_SO_1:: $(JUMP_AR) mk_JUMP_SIBDIRS down/mk_JUMP_SO_2    @@\
  441.                                     @@\
  442. down/mk_JUMP_SO_2: down/mk_JUMP_AR $(Concat(JUMP_SIBARS_,libname))    @@\
  443.     $(RM) $(JUMP_SO)                        @@\
  444.     mkimage -f -v rev -l $(JUMP_LIB) \
  445.         -a $(Concat(JUMP_ADDRESS_,libname)) \
  446.         -j $(Concat(JUMP_JUMPTABLESIZE_,libname)) \
  447.         -g $(Concat(JUMP_GOTSIZE_,libname)) \
  448.         -- $(JUMP_AR) $(Concat(JUMP_LDLIBS_,libname))        @@\
  449.     $(RM) $(JUMP_DIR)/__jump.s $(JUMP_DIR)/__jump.o            @@\
  450.     LinkBuildLibrary($(JUMP_SO))                    @@\
  451.     touch $@                            @@\
  452.                                     @@\
  453. mk_JUMP_SIBDIRS:                            @@\
  454.     @for d in $(Concat(JUMP_SIBDIRS_,libname)); do \
  455.         echo checking ar library in $$d...; \
  456.         (cd $$d ; $(MAKE) $(MFLAGS) fastdo_JUMP_AR) || edit 1; \
  457.         echo ok. continuing in $(Concat(JUMP_ROOT_,libname))...;done@@\
  458.                                     @@\
  459. fastdo_JUMP_AR: $(JUMP_DIR) down/mk_JUMP_AR                @@\
  460.                                     @@\
  461. $(JUMP_AR) do_JUMP_AR:: jumpsetup down/mk_JUMP_AR            @@\
  462.                                     @@\
  463. jumpsetup: $(JUMP_DIR) jumpsetup_$(JUMP_IS_HOST)            @@\
  464.                                     @@\
  465. $(JUMP_DIR):                                @@\
  466.     $(RM) jump                            @@\
  467.     LibMkdir($(Concat(JUMP_DIR_,libname)))                @@\
  468.     $(LN) $(Concat(JUMP_DIR_,libname)) jump                @@\
  469.                                     @@\
  470. jumpsetup_0:                                @@\
  471.     @echo doing jump setup in host $(JUMP_HOST)...            @@\
  472.     @(cd $(JUMP_HOST); $(MAKE) $(MFLAGS) jumpsetup) || exit 1    @@\
  473.     @echo ok. continuing in $(Concat(JUMP_ROOT_,libname))...    @@\
  474.                                     @@\
  475. jumpsetup_1::                                @@\
  476.     @for d in $(Concat(JUMP_SUBDIRS_,libname)); do \
  477.         echo checking stub library in $$d...; \
  478.         (cd $$d ; $(MAKE) $(MFLAGS) do_JUMP_SA) || exit 1; \
  479.         echo ok. continuing in $(Concat(JUMP_ROOT_,libname))...;done@@\
  480.                                     @@\
  481. jumpsetup_1:: $(JUMP_DIR)/jump.funcs $(JUMP_DIR)/jump.vars \
  482.     $(JUMP_DIR)/jump.ignore $(JUMP_DIR)/jump.import            @@\
  483.                                     @@\
  484. $(JUMP_DIR)/jump.funcs: $(Concat(JUMP_FUNCS_,libname))            @@\
  485.     $(RM) $(JUMP_DIR)/jump.funcs                    @@\
  486.     cat $(Concat(JUMP_FUNCS_,libname)) | \
  487.         $(CPP) $(ALLDEFINES) $(Concat(JUMP_DEFS_,libname)) > $@    @@\
  488.                                     @@\
  489. $(JUMP_DIR)/jump.vars: $(Concat(JUMP_VARS_,libname))            @@\
  490.     $(RM) $(JUMP_DIR)/jump.vars                    @@\
  491.     cat $(Concat(JUMP_VARS_,libname)) | \
  492.         $(CPP) $(ALLDEFINES) $(Concat(JUMP_DEFS_,libname)) > $@    @@\
  493.                                     @@\
  494. $(JUMP_DIR)/jump.ignore: $(Concat(JUMP_IGNORE_,libname))        @@\
  495.     $(RM) $(JUMP_DIR)/jump.ignore                    @@\
  496.     cat $(Concat(JUMP_IGNORE_,libname)) | \
  497.         $(CPP) $(ALLDEFINES) $(Concat(JUMP_DEFS_,libname)) > $@    @@\
  498.                                     @@\
  499. $(JUMP_DIR)/jump.import: $(JUMP_DIR)/stubs.import \
  500.         $(Concat(JUMP_IMPORT_,libname))                @@\
  501.     $(RM) $(JUMP_DIR)/jump.import                    @@\
  502.     cat $(JUMP_DIR)/stubs.import $(Concat(JUMP_IMPORT_,libname)) > $@ @@\
  503.                                     @@\
  504. $(JUMP_DIR)/stubs.import: $(Concat(JUMP_STUBS_IMPORT_,libname))        @@\
  505.     $(RM) $(JUMP_DIR)/stubs.import                    @@\
  506.     nm --no-cplus $(Concat(JUMP_STUBS_IMPORT_,libname)) | grep '__GOT__' | \
  507.         sed 's/__GOT__/_/' > $@                    @@\
  508.                                     @@\
  509. down/mk_JUMP_AR: solist                            @@\
  510.     $(RM) $(JUMP_AR)                        @@\
  511.     @if [ -s $(JUMP_DIR)/jump.log ]; then \
  512.         echo "Error: Leftover globals for shared lib"; \
  513.         exit 1; fi                        @@\
  514.     (cd down; $(AR) up/$(JUMP_AR) solist) || exit 1            @@\
  515.     $(RANLIB) $(JUMP_AR)                        @@\
  516.     touch $@                            @@\
  517.                                     @@\
  518. clean:: jumpclean                            @@\
  519.                                     @@\
  520. jumpclean: jumpclean_$(JUMP_IS_HOST)                    @@\
  521.     $(RM) $(JUMP_SA) down/mk_JUMP_AR                @@\
  522.     $(RM) -r $(JUMP_DIR)                        @@\
  523.                                     @@\
  524. jumpclean_0:                                @@\
  525.     $(RM) down/mk_JUMP_SA_0                        @@\
  526.     $(RM) $(JUMP_HOST)/$(JUMP_SA)                    @@\
  527.                                     @@\
  528. jumpclean_1:                                @@\
  529.     $(RM) -r $(JUMP_SO) $(Concat(JUMP_DIR_,libname)) \        @@\
  530.         down/mk_JUMP_SA_1 down/mk_JUMP_SO_1 down/mk_JUMP_SO_2
  531. #endif /* SharedLibraryTarget */
  532.  
  533. /*
  534.  * InstallSharedLibrary - generate rules to install the shared library.
  535.  */
  536. #ifndef InstallSharedLibrary
  537. #define    InstallSharedLibrary(libname,rev,dest)                @@\
  538. install:: $(JUMP_SA) $(JUMP_SO)                        @@\
  539.     MakeDir($(DESTDIR)dest)                        @@\
  540.     @if [ "$(JUMP_IS_HOST)" = YES ]; then \
  541.         (T=$(DESTDIR)dest/`echo $(JUMP_SO)|sed 's/\.[^\.]*$$//'`;\
  542.         set -x; \
  543.         $(INSTALL) -s -c $(INSTSOLIBFLAGS) $(JUMP_SO) $(DESTDIR)dest; \
  544.         $(RM) $$T && $(LN) $(JUMP_SO) $$T); fi            @@\
  545.     $(INSTALL) -c $(INSTLIBFLAGS) $(JUMP_SA) $(DESTDIR)dest
  546. #endif /* InstallSharedLibrary */
  547.  
  548. /*
  549.  * InstallSharedLibraryData - generate rules to install the shared library data
  550.  */
  551. #ifndef InstallSharedLibraryData
  552. #define    InstallSharedLibraryData(libname,rev,dest)
  553. #endif /* InstallSharedLibraryData */
  554.  
  555. #endif /* UseElfFormat */
  556.